Storage medium having stored therein an image generation program, image generation method, image generation apparatus and image generation system

ABSTRACT

In an exemplary image generation system, a virtual camera is set in accordance with a position and an orientation of an object in a virtual space. While a predetermined operation is being performed, an orientation of a display device is detected by using an angular velocity sensor provided in the display device, and an orientation of the virtual camera is changed based on the detected orientation. When the predetermined operation is not performed, the virtual camera is positioned based on an original orientation which is determined in accordance with the position and the orientation of the object.

CROSS REFERENCE TO RELATED APPLICATION

The disclosures of Japanese Patent Application No. 2011-126771, filed on Jun. 6, 2011, are incorporated herein by reference.

FIELD

The present application discloses a storage medium having stored therein an image generation program, an image generation method, an image generation apparatus, and an image generation system.

BACKGROUND AND SUMMARY

Some conventional hand-held game apparatuses are each provided with a gyro sensor. In such a hand-held game apparatus, when the game apparatus is moved by a user, a rotation angle based on the movement by the user is detected by using the gyro sensor. A virtual camera in a virtual space is moved in accordance with the detected rotation angle, and an image of a virtual object or the like in the virtual space is taken by the virtual camera, thereby generating an image. Thus, in the above game apparatus, a position of the virtual camera is moved by moving the game apparatus, and the virtual object viewed from various points of view can be displayed.

The above game apparatus controls the virtual camera only by using the gyro sensor.

The present application discloses a storage medium having stored therein an image generation program, an image generation method, an image generation apparatus, and an image generation system which are capable of improving operability.

The exemplary image generation program stored in the computer-readable storage medium according to the present application is executed by a computer of a display device including a display unit. The image generation program causes the computer to execute: moving an object in a virtual space based on an operation performed by a user; setting a virtual camera in the virtual space based on at least one of a position, an orientation, and a travelling direction of the moved object in the virtual space; activating, based on a predetermined activation operation performed by the user, camera control for controlling an orientation of the virtual stereo camera in accordance with an orientation of the display device; and generating an image to be displayed on the display unit by: when the camera control is activated, changing the set orientation of the virtual camera in accordance with the orientation of the display device and capturing the virtual space by using the virtual camera whose orientation has been changed; and when the camera control is not activated, capturing virtual space by using the virtual camera set based on at least one of the position, the orientation, and the travelling direction of the moved object.

According to the above exemplary configuration, the virtual camera is set based on at least one of the position, the orientation, and the travelling direction of the object. Consequently, the virtual camera can be set at an appropriate position while moving the object in accordance with the user's operation. Furthermore, because the virtual camera can be moved in accordance with the orientation of the display device by the user performing the predetermined activation operation, the user can move the object while looking around in the virtual space, for example. Thereby, a variety of operations can be performed.

In another exemplary configuration, when the camera control is activated, the orientation of the virtual camera may be changed, based on a change amount of the orientation of the display device from a reference orientation which is the orientation of the display device when the camera control is activated.

According to the above exemplary configuration, the virtual camera is controlled based on the change amount from the reference orientation which is a position of the display device when the activation operation is performed by the user. Consequently, in a case where the user performs the activation operation after the orientation of the virtual stereo camera is changed, the virtual camera can be prevented from moving suddenly.

In another exemplary configuration, when the camera control is switched from an active state to an inactive state, the orientation of the virtual camera set based on at least one of the position, the orientation, and the travelling direction of the moved object may be used unchanged irrespective of the orientation of the display device when the camera control is inactivated.

In another exemplary configuration, the virtual camera may be set so that the object is included in its viewing range.

According to the above exemplary configuration, when the camera control is inactivated, the image captured by using the set virtual camera is displayed on the display unit. In a case where the user happens to change the orientation of the virtual camera greatly and desires to return the virtual camera to its original state, the user only has to cancel the activation operation. Thus, the virtual camera can be returned to its normal state by a simple operation. Further, if the virtual camera is set so that the object is included in its viewing range, the object can be displayed on the display unit by inactivating the camera control.

According to the above, a storage medium having stored therein an image generation program, an image generation method, an image generation apparatus, and an image generation system which are capable of improving operability can be provided.

These and other objects, features, aspects and advantages will become more apparent from the following detailed description when taken in conjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a non-limiting example of an external configuration of a game apparatus according to an exemplary embodiment;

FIG. 2 shows a non-limiting example of an internal configuration of the game apparatus according to the exemplary embodiment;

FIG. 3 shows a non-limiting example of a usage of the game apparatus according to the exemplary embodiment and a display screen and a virtual space in the usage;

FIG. 4 shows a non-limiting example of a usage of the game apparatus according to the exemplary embodiment and a display screen and a virtual space in the usage;

FIG. 5 shows a non-limiting example of a usage of the game apparatus according to the exemplary embodiment and a display screen and a virtual space in the usage;

FIG. 6 shows a non-limiting example of a memory map in the exemplary embodiment;

FIG. 7 shows a non-limiting example of a flow chart of a display control process performed by a CPU of the game apparatus according to the exemplary embodiment executing an information processing program;

FIG. 8 shows a non-limiting example of a flow chart of a display control process performed by a CPU of a game apparatus according to the exemplary embodiment executing an information processing program; and

FIG. 9 shows a non-limiting example of a positioning method of a virtual stereo camera according to the exemplary embodiment.

DETAILED DESCRIPTION OF NON-LIMITING EXAMPLE EMBODIMENTS

[External Structure of Game Apparatus]

Hereinafter, a game apparatus according to an exemplary embodiment (first embodiment) will be described. FIG. 1 is a plan view illustrating an appearance of a game apparatus 10. The game apparatus 10 is a hand-held game apparatus and is configured to be foldable. FIG. 1 is a front view of the game apparatus 10 in an opened state. The game apparatus 10 is able to take an image by means of an imaging section, display the taken image on a screen, and store data of the taken image. The game apparatus 10 can execute a game program which is stored in an exchangeable memory card or a game program which is received from a server or another game apparatus, and can display, on the screen, an image generated by computer graphics processing, such as an image taken by a virtual camera set in a virtual space, for example.

Initially, an external structure of the game apparatus 10 will be described with reference to FIG. 1. The game apparatus 10 includes a lower housing 11 and an upper housing 21 as shown in FIG. 1. The lower housing 11 and the upper housing 21 are connected to each other so as to be openable and closable (foldable).

(Description of Lower Housing)

Initially, a structure of the lower housing 11 will be described. As shown in FIG. 1, in the lower housing 11, a lower LCD (Liquid Crystal Display) 12, a touch panel 13, operation buttons 14A to 14I, an analog stick 15, an LED 16A and an LED 16B, an insertion opening 17, and a microphone hole 18 are provided. Hereinafter, these components will be described in detail.

As shown in FIG. 1, the lower LCD 12 is accommodated in the lower housing 11. The number of pixels of the lower LCD 12 may be, for example, 320 dots×240 dots (the horizontal line×the vertical line). The lower LCD 12 is a display device for displaying an image in a planar manner (not in a stereoscopically visible manner), which is different from the upper LCD 22 as described below. Although an LCD is used as a display device in the exemplary embodiment, any other display device such as a display device using an EL (Electro Luminescence), or the like may be used. In addition, a display device having any resolution may be used as the lower LCD 12.

As shown in FIG. 1, the game apparatus 10 includes the touch panel 13 as an input device. The touch panel 13 is mounted on the screen of the lower LCD 12. In the exemplary embodiment, the touch panel 13 may be, but is not limited to, a resistive film type touch panel. A touch panel of any type such as electrostatic capacitance type may be used. In the exemplary embodiment, the touch panel 13 has the same resolution (detection accuracy) as that of the lower LCD 12. However, the resolution of the touch panel 13 and the resolution of the lower LCD 12 may not necessarily be the same. Further, the insertion opening 17 (indicated by dashed line in FIG. 1) is provided on the upper side surface of the lower housing 11. The insertion opening 17 is used for accommodating a touch pen 28 which is used for performing an operation on the touch panel 13. Although an input on the touch panel 13 is usually made by using the touch pen 28, a finger of a user may be used for making an input on the touch panel 13, in addition to the touch pen 28.

The operation buttons 14A to 14I are each an input device for making a predetermined input. As shown in FIG. 1, a cross button 14A (a direction input button 14A), a button 14B, a button 14C, a button 14D, a button 14E, a power button 14F, a selection button 14G, a HOME button 14H, and a start button 14I are provided on the inner side surface (main surface) of the lower housing 11. The cross button 14A is cross-shaped, and includes buttons for indicating an upward, a downward, a leftward, or a rightward direction. The buttons 14A to 14E, the selection button 14G, the HOME button 14H, and the start button 14I are assigned functions, respectively, in accordance with a program executed by the game apparatus 10, as necessary. For example, the cross button 14A is used for selection operation and the like, and the operation buttons 14B to 14E are used for, for example, determination operation and cancellation operation. The power button 14F is used for powering the game apparatus 10 on/off.

The analog stick 15 is a device for indicating a direction. The analog stick 15 has a top, corresponding to a key, which slides parallel to the inner side surface of the lower housing 11. The analog stick 15 acts in accordance with a program executed by the game apparatus 10. For example, when a game in which a predetermined object emerges in a three-dimensional virtual space is executed by the game apparatus 10, the analog stick 15 acts as an input device for moving the predetermined object in the three-dimensional virtual space. In this case, the predetermined object is moved in a direction in which the top corresponding to the key of the analog stick 15 slides. As the analog stick 15, a component which enables an analog input by being tilted by a predetermined amount, in any direction, such as the upward, the downward, the rightward, the leftward, or the diagonal direction, may be used.

Further, the microphone hole 18 is provided on the inner side surface of the lower housing 11. Under the microphone hole 18, a microphone (see FIG. 2) is provided as a sound input device described below, and the microphone detects for a sound from the outside of the game apparatus 10.

Moreover, an L button 14J and an R button 14K are provided on the upper side surface of the lower housing 11, which are not shown. The L button 14J and the R button 14K act as, for example, shutter buttons (imaging instruction buttons) of the imaging section. Further, a sound volume button 14L is provided on the left side surface of the lower housing 11, which is not shown. The sound volume button 14L is used for adjusting a sound volume of a speaker of the game apparatus 10.

As shown in FIG. 1, a cover section 11B is provided on the left side surface of the lower housing 11 so as to be openable and closable. Inside the cover section 11B, a connector (not shown) is provided for electrically connecting between the game apparatus 10 and an external data storage memory 46. The external data storage memory 46 is detachably connected to the connector. The external data storage memory 46 is used for, for example, recording (storing) data of an image taken by the game apparatus 10.

Further, as shown in FIG. 1, an insertion opening 11C through which an external memory 45 having a game program stored therein is inserted is provided on the upper side surface of the lower housing 11. A connector (not shown) for electrically connecting between the game apparatus 10 and the external memory 45 in a detachable manner is provided inside the insertion opening 11C. A predetermined game program is executed by connecting the external memory 45 to the game apparatus 10.

Further, as shown in FIG. 1, a first LED 16A for notifying a user of an ON/OFF state of a power supply of the game apparatus 10 is provided on the lower side surface of the lower housing 11. Furthermore, a second LED 16B for notifying a user of an establishment state of a wireless communication of the game apparatus 10 is provided on the right side surface of the lower housing 11, which is not shown. The game apparatus 10 can make wireless communication with other devices, and the second LED 16B is lit up when the wireless communication is established. The game apparatus 10 has a function of connecting to a wireless LAN in a method based on, for example, IEEE802.11.b/g standard. A wireless switch 19 for enabling/disabling the function of the wireless communication is provided on the right side surface of the lower housing 11 (not shown).

A rechargeable battery (not shown) acting as a power supply for the game apparatus 10 is accommodated in the lower housing 11, and the battery can be charged through a terminal provided on a side surface (for example, the upper side surface) of the lower housing 11.

(Description of Upper Housing)

Next, a structure of the upper housing 21 will be described. As shown in FIG. 1, in the upper housing 21, an upper LCD (Liquid Crystal Display) 22, an outer imaging section 23 (an outer imaging section (left) 23 a and an outer imaging section (right) 23 b), an inner imaging section 24, a 3D adjustment switch 25, and a 3D indicator 26 are provided. Hereinafter, these components will be described in detail.

As shown in FIG. 1, the upper LCD 22 is accommodated in the upper housing 21. The number of pixels of the upper LCD 22 may be, for example, 800 dots×240 dots (the horizontal line×the vertical line). Although, in the exemplary embodiment, the upper LCD 22 is an LCD, a display device using an EL (Electro Luminescence), or the like may be used. In addition, a display device having any resolution may be used as the upper LCD 22.

The upper LCD 22 is a display device capable of displaying a stereoscopically visible image. Further, in the exemplary embodiment, an image for a left eye and an image for a right eye are displayed by using substantially the same display area. Specifically, the upper LCD 22 may be a display device using a method in which the image for a left eye and the image for a right eye are alternately displayed in the horizontal direction in predetermined units (for example, every other line). Alternatively, a display device using a method in which the image for a left eye and the image for a right eye may be alternately displayed in a time division manner may be used. Further, in the exemplary embodiment, the upper LCD 22 is a display device capable of displaying an image which is stereoscopically visible with naked eyes. A lenticular lens type display device or a parallax barrier type display device is used which enables the image for a left eye and the image for a right eye, which are alternately displayed in the horizontal direction, to be separately viewed by the left eye and the right eye, respectively. In the exemplary embodiment, the upper LCD 22 of a parallax barrier type is used. The upper LCD 22 displays, by using the image for a right eye and the image for a left eye, an image (hereinafter, referred to as a “stereoscopically visible image”) which is stereoscopically visible with naked eyes. That is, the upper LCD 22 allows a user to view the image for a left eye with her/his left eye, and the image for a right eye with her/his right eye by utilizing a parallax barrier, so that a stereoscopically visible image exerting a stereoscopic effect for a user can be displayed. Further, the upper LCD 22 may disable the parallax barrier. When the parallax barrier is disabled, an image can be displayed in a planar manner (it is possible to display a planar visible image which is different from a stereoscopically visible image as described above. Specifically, a display mode is used in which the same displayed image is viewed with a left eye and a right eye.). Thus, the upper LCD 22 is a display device capable of switching between a stereoscopically visible display (stereoscopic display mode) for displaying a stereoscopic image which is stereoscopically visible and a planar view display (planar display mode) for displaying an image in a planar manner (for displaying a planar view image). The switching of the display is performed by a process performed by a CPU 311 or by the 3D adjustment switch 25 described below.

Two imaging sections (23 a and 23 b) provided on the outer side surface (the back surface reverse of the main surface on which the upper LCD 22 is provided) 21D of the upper housing 21 are generically referred to as the outer imaging section 23. The viewing directions of the outer imaging section (left) 23 a and the outer imaging section (right) 23 b are each the same as the outward normal direction of the outer side surface 21D. The outer imaging section (left) 23 a and the outer imaging section (right) 23 b can be used as a stereo camera depending on a program executed by the game apparatus 10. Each of the outer imaging section (left) 23 a and the outer imaging section (right) 23 b includes an imaging device, such as a CCD image sensor or a CMOS image sensor, having a common predetermined resolution, and a lens. The lens may have a zooming mechanism.

The inner imaging section 24 is positioned on the inner side surface (main surface) 21B of the upper housing 21, and acts as an imaging section which has a viewing direction which is the same direction as the inward normal direction of the inner side surface. The inner imaging section 24 includes an imaging device, such as a CCD image sensor and a CMOS image sensor, having a predetermined resolution, and a lens. The lens may have a zooming mechanism.

The 3D adjustment switch 25 is a slide switch, and is used for switching a display mode of the upper LCD 22 as described above. The 3D adjustment switch 25 is used for adjusting the stereoscopic effect of a stereoscopically visible image which is displayed on the upper LCD 22. However, as is apparent from the below description, an exemplary case will be described in which an image displayed on the upper LCD 22 is switched between a stereoscopically visible image and a planar view image, regardless of whether the 3D adjustment switch 25 is operated, in the exemplary embodiment.

The 3D indicator 26 indicates whether or not the upper LCD 22 is in the stereoscopic display mode. The 3D indicator 26 is implemented as a LED, and is lit up when the stereoscopic display mode of the upper LCD 22 is enabled. The 3D indicator 26 may be lit up only when the program processing for displaying a stereoscopically visible image is performed in a situation in which the upper LCD 22 is in the stereoscopic display mode. As shown in FIG. 1, the 3D indicator 26 is positioned near the screen of the upper LCD 22 on the inner side surface of the upper housing 21. Therefore, when a user views the screen of the upper LCD 22 from the front thereof, the user can easily view the 3D indicator 26. Therefore, also when a user is viewing the screen of the upper LCD 22, the user can easily recognize the display mode of the upper LCD 22.

Further, a speaker hole 21E is provided on the inner side surface of the upper housing 21. A sound is outputted through the speaker hole 21E from a speaker 43 described below.

(Internal Configuration of Game Apparatus 10)

Next, an internal electrical configuration of the game apparatus 10 will be described with reference to FIG. 2. FIG. 2 is a block diagram illustrating an internal configuration of the game apparatus 10. As shown in FIG. 2, the game apparatus 10 includes, in addition to the components described above, electronic components such as an information processing section 31, a main memory 32, an external memory interface (external memory I/F) 33, an external data storage memory I/F 34, an internal data storage memory 35, a wireless communication module 36, a local communication module 37, a real-time clock (RTC) 38, an acceleration sensor 39, a power supply circuit 40, an interface circuit (I/F circuit) 41, and the like. These electronic components are mounted on an electronic circuit substrate, and accommodated in the lower housing 11 (or the upper housing 21).

The information processing section 31 is information processing means which includes a CPU (Central Processing Unit) 311 for executing a predetermined program, a GPU (Graphics Processing Unit) 312 for performing image processing, and the like. The CPU 311 of the information processing section 31 executes a program stored in a memory (for example, the external memory connected to the external memory I/F 33, or the internal data storage memory 35) in the game apparatus 10, to execute a process based on the program. The program executed by the CPU 311 of the information processing section 31 may be acquired from another device through communication with the other device. The information processing section 31 further includes a VRAM (Video RAM) 313. The GPU 312 of the information processing section 31 generates an image in accordance with an instruction from the CPU 311 of the information processing section 31, and renders the image in the VRAM 313. The GPU 312 of the information processing section 31 outputs the image rendered in the VRAM 313, to the upper LCD 22 and/or the lower LCD 12, and the image is displayed on the upper LCD 22 and/or the lower LCD 12.

To the information processing section 31, the main memory 32, the external memory I/F 33, the external data storage memory I/F 34, and the internal data storage memory 35 are connected. The external memory I/F 33 is an interface for detachably connecting to the external memory 45. The external data storage memory I/F 34 is an interface for detachably connecting to the external data storage memory 46.

The main memory 32 is volatile storage means used as a work area and a buffer area for (the CPU 311 of) the information processing section 31. That is, the main memory 32 temporarily stores various types of data used for the process based on the program described above, and temporarily stores a program acquired from the outside (the external memory 45, another device, or the like), for example. In the exemplary embodiment, for example, a PSRAM (Pseudo-SRAM) is used as the main memory 32.

The external memory 45 is nonvolatile storage means for storing a program executed by the information processing section 31. The external memory 45 is implemented as, for example, a read-only semiconductor memory. When the external memory 45 is connected to the external memory I/F 33, the information processing section 31 can load a program stored in the external memory 45. A predetermined process is performed by the program loaded by the information processing section 31 being executed. The external data storage memory 46 is implemented as a non-volatile readable and writable memory (for example, a NAND flash memory), and is used for storing predetermined data. For example, images taken by the outer imaging section 23 and/or images taken by another device are stored in the external data storage memory 46. When the external data storage memory 46 is connected to the external data storage memory I/F 34, the information processing section 31 loads an image stored in the external data storage memory 46, and the image can be displayed on the upper LCD 22 and/or the lower LCD 12.

The internal data storage memory 35 is implemented as a non-volatile readable and writable memory (for example, a NAND flash memory), and is used for storing predetermined data. For example, data and/or programs downloaded through the wireless communication module 36 by wireless communication is stored in the internal data storage memory 35.

The wireless communication module 36 has a function of connecting to a wireless LAN by using a method based on, for example, IEEE 802.11.b/g standard. The local communication module 37 has a function of performing wireless communication with the same type of game apparatus in a predetermined communication method (for example, a communication based on an independent protocol, or infrared communication). The wireless communication module 36 and the local communication module 37 are connected to the information processing section 31. The information processing section 31 can perform data transmission to and data reception from another device via the Internet by using the wireless communication module 36, and can perform data transmission to and data reception from the same type of another game apparatus by using the local communication module 37.

The RTC 38 and the power supply circuit 40 are connected to the information processing section 31. The RTC 38 counts time and outputs the counted time to the information processing section 31. The information processing section 31 calculates a current time (date) based on the time counted by the RTC 38.

The acceleration sensor 39 is connected to the information processing section 31. The acceleration sensor 39 detects magnitudes of accelerations (linear accelerations) in the directions of the straight lines along the three axial (xyz axial) directions, respectively. The acceleration sensor 39 is provided inside the upper housing 21. In the acceleration sensor 39, as shown in FIG. 1, the long side direction of the upper LCD 22 is defined as x axial direction, the short side direction of the upper LCD 22 is defined as y axial direction, and the direction orthogonal to the inner side surface of the upper LCD 22 is defined as z axial direction, thereby detecting magnitudes of the linear accelerations for the respective axes. The acceleration sensor 39 is, for example, an electrostatic capacitance type acceleration sensor. However, another type of acceleration sensor may be used. The acceleration sensor 39 may be an acceleration sensor for detecting a magnitude of an acceleration for one axial direction or two-axial directions. The information processing section 31 can receive data (acceleration data) representing accelerations detected by the acceleration sensor 39, and detect an orientation and a motion of the game apparatus 10.

An angular velocity sensor 40 is connected to the information processing section 31. The angular velocity sensor 40 detects angular velocities around the three axes (xyz-axes in the exemplary embodiment) of the upper LCD 22, and outputs, to the information processing section 31, data (angular velocity data) representing the angular velocities having been detected. The angular velocity sensor 40 is provided inside the lower housing 11, for example. The information processing section 31 receives the angular velocity data outputted by the angular velocity sensor 40, and calculates an orientation and a motion of the upper LCD 22.

As described above, the orientation and the motion of the upper LCD 22 are calculated by the acceleration sensor 39 and the angular velocity sensor 40. The long side direction, the short side direction, and the direction orthogonal to the display screen of the upper LCD 22 coincide with the long side direction, the short side direction and the direction orthogonal to the inner side surface (main surface) of the upper housing 21, respectively. Consequently, an orientation and a motion of the upper LCD 22 coincide with an orientation and a motion of the upper housing 21 which fixedly accommodates the upper LCD. In the following description, obtaining an orientation and a motion of the game apparatus is the same meaning as obtaining an orientation and a motion of the upper LCD 22.

The power supply circuit 41 controls power to be supplied from a power supply (the rechargeable battery accommodated in the lower housing 11) of the game apparatus 10, and supplies power to each component of the game apparatus 10.

The I/F circuit 42 is connected to the information processing section 31. The microphone 43 and the speaker 44 are connected to the I/F circuit 42. Specifically, the speaker 44 is connected to the I/F circuit 42 through an amplifier which is not shown. The microphone 43 detects a voice from a user, and outputs a sound signal to the I/F circuit 42. The amplifier amplifies the sound signal outputted from the I/F circuit 42, and a sound is outputted from the speaker 44. The touch panel 13 is connected to the I/F circuit 42. The I/F circuit 42 includes a sound control circuit for controlling the microphone 43 and the speaker 44 (amplifier), and a touch panel control circuit for controlling the touch panel. The sound control circuit performs A/D conversion and D/A conversion on the sound signal, and converts the sound signal to a predetermined form of sound data, for example. The touch panel control circuit generates a predetermined form of touch position data based on a signal outputted from the touch panel 13, and outputs the touch position data to the information processing section 31. The touch position data represents a coordinate of a position, on an input surface of the touch panel 13, on which an input is made.

The operation button 14 includes the operation buttons 14A to 14L described above, and is connected to the information processing section 31. Operation data representing an input state of each of the operation buttons 14A to 14I is outputted from the operation button 14 to the information processing section 31, and the input state indicates whether or not each of the operation buttons 14A to 14L has been pressed. The information processing section 31 acquires the operation data from the operation button 14 to perform a process in accordance with the input on each of the operation buttons 14A to 14L. The CPU 311 acquires the operation data from the operation button 14 every predetermined time.

The lower LCD 12 and the upper LCD 22 are connected to the information processing section 31. The lower LCD 12 and the upper LCD 22 each display an image in accordance with an instruction from (the GPU 312 of) the information processing section 31. In the exemplary embodiment, the information processing section 31 causes the upper LCD 22 to display a stereoscopic image (stereoscopically visible image).

Specifically, the information processing section 31 is connected to an LCD controller (not shown) of the upper LCD 22, and causes the LCD controller to set the parallax barrier to ON or OFF. When the parallax barrier is set to ON in the upper LCD 22, an image for a right eye and an image for a left eye, which are stored in the VRAM 313 of the information processing section 31, are outputted to the upper LCD 22. More specifically, the LCD controller alternately repeats reading of pixel data of the image for a right eye for one line in the vertical direction, and reading of pixel data of the image for a left eye for one line in the vertical direction, thereby reading, from the VRAM 313, the image for a right eye and the image for a left eye. Thus, an image to be displayed is divided into the images for a right eye and the images for a left eye each of which is a rectangle-shaped image having one line of pixels aligned in the vertical direction, and an image, in which the rectangle-shaped image for the left eye which is obtained through the division, and the rectangle-shaped image for the right eye which is obtained through the division are alternately aligned, is displayed on the screen of the upper LCD 22. A user views the images through the parallax barrier in the upper LCD 22, so that the image for the right eye is viewed by the user's right eye, and the image for the left eye is viewed by the user's left eye. In the exemplary embodiment, the parallax barrier is constantly set to be ON. Thus, the stereoscopically visible image is displayed on the screen of the upper LCD 22.

The outer imaging section 23 and the inner imaging section 24 are connected to the information processing section 31. The outer imaging section 23 and the inner imaging section 24 each take an image in accordance with an instruction from the information processing section 31, and data of the taken images are outputted to the information processing section 31.

The 3D adjustment switch 25 is connected to the information processing section 31. The 3D adjustment switch 25 transmits, to the information processing section 31, an electrical signal in accordance with the position of the slider 25 a.

The 3D indicator 26 is connected to the information processing section 31. The information processing section 31 controls whether or not the 3D indicator 26 is to be lit up. For example, the information processing section 31 lights up the 3D indicator 26 when the upper LCD 22 is in the stereoscopic display mode. The game apparatus 10 has the internal configuration as described above.

[Outline of Information Processing]

In the following, an outline of information processing according to the exemplary embodiment will be described with reference to FIGS. 3, 4, and 5. In the exemplary embodiment, a game process performed by the game apparatus 10 will be described as an example of the information processing.

In the game process according to the exemplary embodiment, a game is advanced by a player moving a player object that appears in a virtual game space within the virtual game space by using “operation means for indicating a direction” of the game apparatus 10. More specifically, directions to be instructed by the operation means are associated with directions in the virtual space, respectively. When a direction is instructed by the operation means, the direction (the forward direction) or the travelling direction of the player object is changed to a direction in the virtual space corresponding to the instructed direction, and simultaneously the player object is moved in the instructed direction. Alternatively, the travelling direction of the player object and the direction of the player object may be separately managed, and the direction of the player object may be controlled by an instructed direction and simultaneously the travelling direction of the player object may be controlled so as to be gradually moved toward the direction of the player object. It should be noted that a correspondence relation between the instructed direction by the operation means and the direction of the player object in the virtual space may be based on the screen (based on a viewing direction of the virtual camera), or may be based on the current direction of the player object. For example, when the analog stick 15 is tilted upward, the player object moves farther in a depth direction in the virtual space. When the analog stick 15 is tilted downward, the player object moves forward in the depth direction in the virtual space. An orientation (direction) of the player object is controlled so that the forward direction of the player object faces in a direction designated by the analog stick 15. Further, for example, the player object can be caused to perform a motion such as a jumping motion by operating another operation means (a button, a touch panel, and the like); however, a detailed description thereof is omitted here.

When the game process according to the exemplary embodiment is performed, a process of positioning a virtual camera in the virtual game space is performed. Then, the virtual game space is captured by using the positioned virtual camera, thereby an image to be displayed on the screen of the game apparatus is generated. As will be described later, in the exemplary embodiment, a virtual stereo camera which separately generates an image for right eye and an image for left eye is positioned in order to display a stereoscopically visible image.

In the exemplary embodiment, a position and an orientation of the virtual camera are set based on a position and an orientation (or the travelling direction) of the player object. Specifically, the viewing direction of the virtual camera is set so as to coincide with or follow up the direction in which the player object faces or the travelling direction of the player object. Further, the position of the virtual camera is set so that the position of the player object is included within the screen. As described above, the orientation (or the travelling direction) of the player object is controlled based on a predetermined operation (an operation of the analog stick 15 in the exemplary embodiment) performed by the user. Accordingly, the orientation of the virtual stereo camera is changed in accordance with the predetermined operation performed by the user. Further, the position of the player object is changed by a predetermined operation (an operation of the analog stick 15 in the exemplary embodiment) of the user, and the position of the virtual camera is changed accordingly. The position of the virtual camera may be changed in accordance with change in the position of the player object such that, for example, the position of the virtual camera is maintained at a constant distance from the position of the player object. The orientation of the virtual camera may not be changed even if the orientation (or the travelling direction) of the player object is changed. The position and the orientation of the virtual camera based on the position and the orientation (or the travelling direction) of the player object as described above are referred to as “the position and the orientation of the virtual camera in normal control.” “The normal control” is control performed irrespective of whether or not later-described “apparatus orientation follow-up control” is activated.

In this manner, the position and the orientation of the virtual camera is changed in accordance with the position and the orientation (or the travelling direction) of the player object based on an operation of the analog stick 15. In the game process according to the exemplary embodiment, the orientation of the virtual camera can be changed by further changing an orientation of the game apparatus in a real space. The control of the orientation of the virtual camera based on the orientation of the game apparatus is referred to as “apparatus orientation follow-up control.” More specifically, when the player performs a predetermined operation by using the operation means of the game apparatus 10, the apparatus orientation follow-up control is activated. In the exemplary embodiment, an operation of pressing the R button 14K is the “predetermined operation.” While the R button 14K is being pressed, the control is in a “apparatus orientation follow-up control” mode, and the virtual camera can be operated. When the R button 14K is released, the control is in a normal mode, and the virtual camera is not moved even if the orientation of the game apparatus is changed. The apparatus orientation follow-up control may be maintained when the R button 14K is pressed and then released. While the R button 14K is being pressed, the position and the orientation of the virtual camera is changed by the apparatus orientation follow-up control based on “the position and the orientation of the virtual camera in the normal control.” More specifically, while the apparatus orientation follow-up control is active, the orientation of the virtual camera is obtained by changing “the orientation of the virtual camera in the normal control” by an amount of orientation change due to the apparatus orientation follow-up control. It should be noted that while the apparatus orientation follow-up control is active, the position of the virtual camera may be the same as “the position of the virtual camera in the normal control.” However, the position of the virtual camera does not have to be exactly the same as “the position of the virtual camera in the normal control,” and may vary in the vicinity of “the position of the virtual camera in the normal control.” The position of the virtual camera may vary so that the player object is included in the viewing range of the virtual camera.

FIG. 3 and FIG. 4 each show how the virtual camera is operated by moving the game apparatus 10. FIG. 3 shows a play situation 301A in a normal state (a state in which the R button 14K is not pressed), an image 302A to be displayed on the screen, and a state 303A of objects and the virtual camera in the virtual game space in the situation 301A. As shown in the state 303A, in the normal state, a virtual camera 312A is positioned so as to capture a player object 310 from directly behind and an image in which the player object 310 is positioned in the middle in the horizontal direction is displayed on the screen. FIG. 4 shows a situation 301B when the R button 14K is pressed in the state of FIG. 3 and the game apparatus is rotated in a leftward direction, an image 302B to be displayed on the screen, and a state 303B of the objects and the virtual camera in the virtual game space in the situation 301B. At this time, the apparatus orientation follow-up control is activated by the R button 14K being pressed, and an image 311 indicating that the apparatus orientation follow-up control is activated is displayed on the screen. While the apparatus orientation follow-up control is activated, the virtual camera can be moved in accordance with the orientation of the game apparatus. In FIG. 4, the game apparatus is rotated in the leftward direction after the apparatus orientation follow-up control is activated (while the R button 14K is being pressed), and a virtual camera 312B rotates in the leftward direction in the same manner. Consequently, a viewing direction of the virtual camera 312B shifts in the leftward direction so as to capture a range shifted in the leftward direction from the range which the virtual camera 312B has originally captured. Thus, an object 313 which has been present in the leftward direction from the player object and has not been displayed on the screen is displayed on the screen.

In the state of FIG. 4, the apparatus orientation follow-up control is inactivated when the R button 14K is released. At this time, the orientation of the virtual camera returns to that as shown in 303A automatically without returning the orientation of the game apparatus to the state of 301A, and the image being displayed on the screen becomes the same as 302A. That is, when the apparatus orientation follow-up control is inactivated, the amount of orientation change due to the apparatus orientation follow-up control becomes zero. Consequently, the position and the orientation of the virtual camera coincide with “the position and the orientation of the virtual camera in the normal control.”

As described above, a stereoscopically visible image is displayed in the exemplary embodiment. For this reason, a virtual stereo camera (a right virtual camera and a left virtual camera) which separately generates an image for a right eye and an image for a left eye is positioned. The virtual cameras each capture the virtual game space and generate an image for a right eye and an image for a left eye, respectively, thereby the virtual game space is stereoscopically displayed on the display means 22 by using these images. The right virtual camera and the left virtual camera are set based on a virtual camera (hereinafter, referred to as reference virtual camera) which is set by the method described above. Although specific processes will be described later, the reference virtual camera moved in the left direction (in the x-axis positive direction) and the reference virtual camera moved in the right direction (in the x-axis negative direction) in a reference virtual camera coordinate system are used as the left and the right virtual cameras, respectively.

A change in the orientation of the game apparatus is represented as change about the x-axis (in a tilt direction), change about the y-axis (in a pan direction), and change about the z-axis (in a roll direction). With reference to FIG. 3 and FIG. 4, a case where the orientation of the game apparatus is changed about the y-axis has been described. Although detailed description is omitted here, also when the game apparatus is rotationally moved about the x-axis, the orientation of the virtual camera changes in accordance with the orientation of the game apparatus in the same manner as when the game apparatus is rotationally moved about the y-axis.

Further, also when the orientation of the game apparatus is changed about the z-axis, the orientation of the virtual camera changes in accordance with the orientation of the game apparatus. FIG. 5 shows a situation 401 in which the game apparatus is tilted and an image 402 to be displayed on the screen in the situation 401. When the apparatus orientation is changed about the z-axis, the viewing direction of the virtual camera does not change, and the virtual camera is rotated about the viewing direction thereof as an axis. At this time, an image as shown in the image 402 which is tilted with respect to the game apparatus is displayed on the screen. When the game apparatus is in the state shown in 401, the display means displaying the image is tilted with respect to the user. Consequently, the user views the objects such as the player object in the virtual game space at the same angle as before the game apparatus is tilted.

In the exemplary embodiment, a unit of the angle relative to each axis which is calculated based on the angular velocity of the rotation about each axis having been detected by the angular velocity sensor 40 is preset so as to be equivalent to a unit of an angle relative to each axis of the virtual space. Therefore, in the exemplary embodiment, the rotation angle relative to each axis calculated based on the angular velocity of the rotation about each axis detected by the angular velocity sensor 40 can be used, as it is, as a rotation angle for changing the orientation of the virtual camera.

In the exemplary embodiment, a range of changing the orientation of the virtual camera about each of the x-axis (in the tilt direction) and the y-axis (in the pan direction) is limited. Specifically, the orientation of the virtual camera can be changed within a range that does not allow the viewing direction of the virtual camera to deviate greatly from the player object. For example, in a case where the game apparatus is further rotated in the leftward direction in the state shown in FIG. 4 while the apparatus orientation follow-up control is active (while the R button 14K is kept pressed), if the virtual camera is rotated in the leftward direction in the same manner as the game apparatus, the player object may deviate from a viewing range of the virtual camera and will not be displayed on the screen. For this reason, even if the game apparatus is further rotated in the leftward direction in the state shown in FIG. 4, the virtual camera is not rotated further from the state of FIG. 4 and the image displayed on the screen does not change from the state of FIG. 4.

Meanwhile, when the orientation of the game apparatus is changed about the z-axis (in the roll direction), unlike the change about each of the x-axis (in the tilt direction) and y-axis (in the pan direction), there is no limit on the range of changing the orientation of the virtual camera. However, when the orientation of the game apparatus is changed about the z-axis (in the roll direction), the following situation may occur. Naked eye stereoscopic display means used in the exemplary embodiment displays a stereoscopically visible image by allocating an image for a right eye and an image for a left eye so that the image for a right eye is viewed only by the user's right eye and the image for a left eye is viewed only by the user's left eye. Normally, when the user and the display means face each other (when the up-down direction of the user coincides with the up-down direction of the display means), an image can be stereoscopically viewed. If the display means is rotated about the z-axis, the up-down direction of the user is shifted from the up-down direction of the display means. Consequently, the image for a right eye is viewed also by the left eye and the image for a left eye is viewed also by the right eye, and the user cannot view an image stereoscopically. In this situation, a slight change in the orientation of the game apparatus can frequently switch between states in which the image for a right eye is viewed, the image for a left eye is viewed, and both of the images are viewed at the same time. As a result, if a parallax between the image for a right eye and the image for a left eye is too large, two images which are greatly different from each other are viewed alternately. This causes the user to view a blurred image which is difficult to view.

For this reason, in the exemplary embodiment, when the virtual camera is rotated about an axis orthogonal to the upper LCD 22 (about the z-axis) in accordance with change in the orientation of the game apparatus, the virtual camera is controlled simultaneously so that a parallax (that is, a degree of stereoscopic effect) between the image for a right eye and the image for a left eye becomes small. Specifically, respective positions of the right virtual camera and the left virtual camera are changed so that greater the rotation angle in the roll direction is, the smaller a virtual stereo camera distance (a distance between the right virtual camera and the left virtual camera) becomes. In the exemplary embodiment, a virtual stereo camera distance is controlled so that the virtual stereo camera distance becomes zero (that is, the degree of stereoscopic effect becomes zero) when the virtual camera is tilted by 25 degrees in the roll direction from a reference virtual camera orientation. When the virtual camera is tilted by an angle greater than 25 degrees, the virtual stereo camera distance stays zero. In this case, the image for a right eye is identical to the image for a left eye, and thus an image is displayed in a planar manner on the display means.

[Data to be Stored in Main Memory]

Next, data to be stored in the main memory 32 in accordance with the game program being executed by the CPU 311 will be described with reference to FIG. 6 prior to description of a specific operation performed by the CPU 311 of the game apparatus 10. The game program is stored in a predetermined storage medium attachable to the game apparatus 10 or in a nonvolatile memory in the game apparatus 10, and is loaded into the main memory and then executed.

As shown in FIG. 6 by way of example, player object position and orientation data 501, reference virtual camera setting data 502, virtual stereo camera distance data 503, apparatus rotation angle data 504, x-axis threshold data 505, y-axis threshold data 506, z-axis threshold data 507, and reference distance data 508 are stored in the main memory 32. The player object position and orientation data 501, the reference virtual camera setting data 502, the virtual stereo camera distance data 503, and the apparatus rotation angle data 504 are data which are generated by the CPU 311 executing the game program. The x-axis threshold data 505, the y-axis threshold data 506, the z-axis threshold data 507, and the reference distance data 508 are data which are contained in the game program.

The player object position and orientation data 501 represents a position and an orientation (or the travelling direction) of the player object in the virtual game space. The position of the player object is represented by coordinates with respect to xyz-axis directions in a world coordinate system representing the virtual space and the orientation of the player object is represented by respective angles relative to the xyz axes.

The reference virtual camera setting data 502 represents a setting of the reference virtual camera and contains information of a position and an orientation of the reference virtual camera. The position of the reference virtual camera is represented by coordinates with respect to the xyz-axis directions in the world coordinate system representing the virtual space and the orientation of the reference virtual camera is represented by respective angles relative to the xyz axes. Further, the reference virtual camera setting data 502 contains information of a viewing angle, a near clip plane, a far clip plane, and the like of the reference virtual camera.

The virtual stereo camera distance data 503 represents a distance between the right virtual camera and the left virtual camera. The reference distance data 508 represents a reference value of the distance between the right virtual camera and the left virtual camera.

As will be described later, the value of the virtual stereo camera distance data 503 is set based on the reference value represented by the reference distance data 508.

The x-axis threshold data 505 and the y-axis threshold data 506 are used in a later-described virtual stereo camera setting update process and each represent threshold data to be used when determining how to adjust the orientation of the reference virtual camera.

The z-axis threshold data 507 is used in the later-described virtual stereo camera setting update process and represents threshold data to be used when determining how to adjust a virtual stereo camera distance.

[Game Process]

In the following, a specific operation of information processing in the exemplary embodiment will be described with reference to FIG. 7 and FIG. 8. Firstly, when the game apparatus is powered on, a boot program (not shown) is executed by the CPU 311. Thus, the game program stored in the internal data storage memory is loaded and stored in the main memory 32. The game program stored in the main memory 32 is executed by the CPU 311, thereby performing the process shown in flow charts of FIG. 7 and FIG. 8. FIG. 7 and FIG. 8 are flow charts each showing a series of processes performed in a unit time (e.g., at intervals of 1/60 sec) as an example of the game process which is performed by the CPU 311 executing the game program. In FIG. 7 and FIG. 8, step is abbreviated as “S”.

When the game process is started, the CPU 311 firstly performs an initialization process (step 10). Specifically, the CPU 311 sets various data stored in the main memory 32 to default values.

When the initialization process is completed, the CPU 311 performs a game operation input reception process (step 105). Specifically, the CPU 311 recognizes an input state of each of the analog stick 15 and the operation buttons 14A to 14E of the game apparatus.

When the game operation input reception process is completed, the CPU 311 performs a player object position and orientation update process (step 110). Specifically, the CPU 311 updates the position and the orientation (or the travelling direction) of the player object in the virtual space based on the input state of the analog stick 15 or the like, and updates the player object position and orientation data 501.

When the player object position and orientation update process is completed, the CPU 311 performs a reference virtual camera setting process (step 115). Specifically, the CPU 311 firstly obtains the position and the orientation (or the travelling direction) of the player object with reference to the player object position and orientation data 501. Then, based on the obtained position and the orientation (or the travelling direction) of the player object, the CPU 311 sets the position and the orientation of the reference virtual camera. More specifically, the CPU 311 determines, as a position (coordinates of the originating point of the reference virtual camera coordinate system) of the reference virtual camera, a position at a predetermined distance behind and above the player object 310 with respect to a direction in which the player object faces. Further, the CPU 311 determines the orientation (directions of the respective axes of the reference virtual camera coordinate system) of the reference virtual camera such that the direction facing the position of the player object 310 from the determined position of the reference virtual camera becomes the viewing direction of the reference virtual camera. The CPU 311 updates the reference virtual camera setting data 502 so as to represent the setting of the reference virtual camera having been determined as described above. The determined orientation of the reference virtual camera is a reference orientation for updating the orientation of the reference virtual camera in the succeeding processing.

When the reference virtual camera setting process is completed, the CPU 311 performs a virtual camera distance setting process and sets a virtual stereo camera distance that serves as a reference (step 120). In the exemplary embodiment, a distance predetermined by the game program is used as the virtual stereo camera distance serving as the reference, the virtual stereo camera distance data is updated so as to be the predetermined distance. In another embodiment, for example, the virtual camera distance serving as the reference may be changed in accordance with an operation by the user.

When the virtual camera distance setting process is completed, the CPU 311 determines whether an input of the activation operation is in an ON state (step 125). Specifically, it is determined whether an input of the R button 14K, which is a user's operation assigned as the activation operation, is in the ON state (whether the R button 14K is being pressed). When it is determined that the input of the activation operation is in the ON state (YES in step 125), the CPU 311 proceeds the processing to step 125. Otherwise (NO in step 125), the CPU 311 proceeds the processing to step 145.

When the CPU 311 determines that the input of the activation operation is in the ON state in step 125, the CPU 311 further determines whether the input of the activation operation is switched from an OFF state to the ON state (step 130). In other words, the CPU 311 determines whether the input of the activation operation is switched to the ON state at the current timing, or switched to the ON state at the previous timing and has been in the ON state since. When the CPU 311 determines that the input of the activation operation is switched to the ON state at the current timing (YES in step 130), the CPU 311 proceeds the processing to step 135. When the CPU 311 determines that the input of the activation operation has been in the ON state (NO in step 130), the CPU 311 proceeds the processing to step 140.

When having determined that the input of the activation operation is switched to the ON state at the current timing in step 130, the CPU 311 performs an apparatus rotation angle data initialization process (step 135). Specifically, the CPU 311 updates the apparatus rotation angle data 504 so that respective rotation angle data relative to the x-axis, the y-axis, and the z-axis of the game apparatus become zero. With this process, in the subsequent virtual stereo camera setting update process, the rotation angle of the game apparatus is obtained based on the orientation of the game apparatus when the input of the activation operation input is activated.

When the apparatus orientation data initialization process is completed or when it is determined that the input of the activation operation has been in the ON state in step 130, the CPU 311 performs the virtual stereo camera setting update process (step 140). In the following, the virtual stereo camera setting update process will be described in detail with reference to the process flow of FIG. 8.

In the virtual stereo camera setting update process, the CPU 311 firstly performs an angular velocity data detection process (step 200). Specifically, the CPU 311 obtains respective angular velocities in the x-axis, y-axis, and z-axis directions sampled by the angular velocity sensor 40.

When the angular velocity data detection process is completed, the CPU 311 performs an apparatus rotation angle data update process (step 210). Specifically, based on the angular velocity data detected in step 200, the CPU 311 calculates respective angles about the x-axis, y-axis, and z-axis at which the game apparatus is rotated. Then, the CPU 311 adds the calculated angles to the immediately previous apparatus rotation angles (the rotation angles about the x-axis, y-axis, and z-axis based on the apparatus reference orientation), respectively, which have been obtained with reference to the apparatus rotation angle data 504 before being updated. Thereby, current apparatus rotation angles are calculated. The CPU 311 updates the apparatus rotation angle data 504 so as to represent the calculated apparatus rotation angles.

When the apparatus rotation angle data update process is completed, the CPU 311 updates the orientation of the reference virtual camera based on the updated apparatus rotation angle data 504 (steps 215 to 245). In the following, a flow of updating the orientation of the reference virtual camera will be described.

Firstly, with reference to the rotation angle of the game apparatus about the x-axis obtained from the updated apparatus rotation angle data 504, the CPU 311 determines whether the rotation angle about the x-axis is lower than or equal to a threshold obtained with reference to the x-axis threshold data 505 (step 215). When the rotation angle of the game apparatus about the x-axis is lower than or equal to the threshold (YES in step 215), the CPU 311 rotates the reference virtual camera in the x-axis direction in accordance with the rotation angle of the game apparatus (step 220). More Specifically, with reference to the reference virtual camera setting data 502, the CPU 311 obtains the position and the orientation of the reference virtual camera set in step S115, and rotates the reference virtual camera, from the obtained orientation, about the x-axis in the reference virtual camera coordinate system, by an angle corresponding to the rotation angle of the game apparatus about the x-axis. The CPU 311 updates the reference virtual camera setting data 502 so as to represent the orientation of the rotated reference virtual camera. When the rotation angle of the game apparatus about the x-axis is higher than the threshold (NO in step 215), if the virtual camera is rotated by an angle corresponding to the rotation angle of the game apparatus about the x-axis, the player object may deviate from the viewing angle of the reference virtual camera. For this reason, the virtual camera is rotated by an angle corresponding to the rotation angle about the x-axis set as the threshold instead of being rotated by the angle corresponding to the rotation angle of the game apparatus about the x-axis. Then, the CPU 311 updates the reference virtual camera setting data 502 so as to represent the orientation of the rotated reference virtual camera (step 225). Thus, the reference virtual camera is rotated up to the angle set as the threshold, thereby the player object is always displayed on the screen. In the description above and below, the threshold and the rotation angle are compared in a case where both of the threshold and the rotation angle are positive values. However, in reality, based on a reference position, a rotation angle in one direction is represented by a positive value, and a rotation angle in a direction opposite to the one direction is represented by a negative value. Furthermore, it is checked whether the rotation angle is within the threshold also with respect to the rotation angle in the negative direction. An absolute value of the threshold for the positive direction may be set to be equal to or different from an absolute value of the threshold for the negative direction.

When the reference virtual camera setting data 502 relative to the x-axis has been updated, the CPU 311 performs, for the rotation angle about the y-axis, processes similar to the processes (steps 230 to 240) for the rotation angle about the x-axis. That is, the CPU 311 rotates the reference virtual camera about the y-axis of the reference virtual camera coordinate system by an angle corresponding to the rotation angle of the game apparatus about the y-axis or by the rotation angle about the y-axis set as the threshold. Then, the CPU 311 updates the reference virtual camera setting data 502. These processes are similar to those in the case of the x-axis direction, and thus a detailed description thereof is omitted here.

When the reference virtual camera setting data 502 relative to the y-axis has been updated, the CPU 311 updates the reference virtual camera setting data 502 relative to the rotation angle about the z-axis (step 245). Specifically, the CPU 311 rotates the orientation of the reference virtual camera, by an angle corresponding to the rotation angle of the game apparatus about the z-axis, by rotating the reference virtual camera about the z-axis in the reference virtual camera coordinate system. Then, the CPU 311 updates the reference virtual camera setting data 502. Unlike the rotation angle about the x direction or the y direction, the viewing direction (the z-axis direction in the reference virtual camera coordinate system) of the reference virtual camera faces substantially in the direction of the player object. Consequently, the player object will be always displayed on the screen even if the reference virtual camera is rotated by any angle about the z-axis in the reference virtual camera coordinate system. Accordingly, the orientation of the reference virtual camera about the z-axis is updated without determining whether the rotation angle is higher than the threshold.

As described above, the orientation of the reference virtual camera is changed and the reference virtual camera setting data 502 is updated through the processes of steps 215 to 245.

When the reference virtual camera setting data 502 has been updated, the CPU 311 updates the virtual stereo camera distance data 503 (steps 250 to 260). In the following, a flow of updating the virtual stereo camera distance data 503 will be described.

Firstly, with reference to the rotation angle of the game apparatus about the z-axis obtained from the updated apparatus rotation angle data 504, the CPU 311 determines whether the rotation angle about the z-axis is lower than or equal to the threshold obtained with reference to the z-axis threshold data 507 (step 250). When the rotation angle of the game apparatus about the z-axis is lower than or equal to the threshold (YES in step 250), the CPU 311 adjusts the virtual stereo camera distance in accordance with the rotation angle of the game apparatus about the z-axis (step 255). Specifically, the reference value of the virtual stereo camera distance obtained with reference to the reference distance data 508 is reduced in accordance with the rotation angle of the apparatus orientation about the z-axis. More specifically, the reference value is set so that the rotation angle of the apparatus orientation about the z-axis of 0 degrees corresponds to 100% of the reference value and the rotation angle equal to the z-axis threshold corresponds to 0% of the reference value. The CPU 311 updates the virtual stereo camera distance data 503 so as to represent the value of the virtual stereo camera distance. When the rotation angle of the game apparatus about the z-axis is higher than the z-axis threshold (NO in step 250), the CPU 311 updates the virtual stereo camera distance data 503 so that the virtual stereo camera distance becomes zero (step 260).

As described above, the virtual stereo camera distance data 503 is updated through the processes of steps 250 to 260. When the virtual stereo camera distance data 503 has been updated, the CPU 311 ends the virtual stereo camera setting update process and returns the processing to step 145 in the previous process flow of FIG. 7.

When the virtual stereo camera setting update process is completed, and when it is determined that the input of the activation operation is not switched to the ON state in step 125, the CPU 311 performs a virtual stereo camera positioning process (step 145). In the virtual stereo camera positioning process, for example, the virtual stereo camera is positioned by a method shown in FIG. 9 which will be described later. At this time, when the camera control is activated (in the case of YES in step 125 described above), the virtual stereo camera is positioned based on the orientation of the reference virtual camera updated in the virtual stereo camera setting update process. Meanwhile, when the camera control is inactivated (in the case of NO in step 125 described above), the virtual stereo camera is positioned based on the orientation of the reference virtual camera set in the reference virtual camera setting process (step 120). Accordingly, when the camera control is inactivated, the orientation of the virtual camera set in the reference virtual camera setting process is used unchanged irrespective of the orientation of the game apparatus.

When the virtual stereo camera positioning process is completed, the CPU 311 captures the virtual space by means of the positioned right virtual camera and the left virtual camera, generates an image for a right eye and an image for a left eye, and displays the generated images on the display means (step 150).

FIG. 9 shows how the virtual stereo camera is positioned. The CPU 311 firstly obtains a setting of a reference virtual camera Bk with reference to the reference virtual camera setting data 502. Further, the CPU 311 obtains a virtual stereo camera distance Kk with reference to the virtual stereo camera distance data 503. Then, as shown in FIG. 9, the CPU 311 moves the reference virtual camera, from an originating point O in the reference virtual camera coordinate system, in an x-axis positive direction, so as to be spaced from the originating point O by a distance Kk/2 and positioned as a right virtual camera Mk. At the same time, the CPU 311 moves the reference virtual camera, from the originating point O in the reference virtual camera coordinate system, in an x-axis negative direction, so as to be spaced from the originating point O by the distance Kk/2 and positioned as a left virtual camera Hk. The viewing direction of the left virtual camera Hk and the viewing direction of the right virtual camera Mk are parallel to each other.

When the process of generating and displaying the image for a right eye and the image for a left eye is completed, the CPU 311 determines whether an operation for ending the game process has been performed by the user (step 155). When the CPU 311 determines that an operation for ending the game process has been performed (YES in step 155), the CPU 311 ends the execution of the game program. When the CPU 311 determines that an operation for ending the game process has not been performed by the user (NO in step 155), the CPU 311 repeats the processing from step 105.

The game apparatus 10 according to the exemplary embodiment has been described above. The game apparatus 10 according to the exemplary embodiment can reduce a parallax of images in accordance with a magnitude of displacement, generated by the user rotating the game apparatus 10 about the z-axis (in the roll direction), between the viewing direction of the user and the optimal direction for viewing a stereoscopic image, thereby improving visibility.

In the exemplary embodiment, a case has been described in which the rotation angle about the z-axis (in the roll direction) is compared with the threshold set to 25 degrees. However, the threshold may be set to any degrees.

In the exemplary embodiment, the movement and the orientation (or the travelling direction) of the player object are controlled based on a direction instruction operation by the analog stick 15 of the game apparatus 10. However, the game apparatus 10 may be configured to include any another direction instruction means (a slide pad, a cross key, or the like) and control the movement and the orientation (or the travelling direction) of the player object by using the direction instruction means.

Further, in the exemplary embodiment, a stereoscopically visible image is generated. However, the exemplary embodiment is also applicable to a case where a planar view image (non-stereoscopic image) is generated. In this case, a game image is generated by capturing the virtual space by means of the reference virtual camera.

Furthermore, in the above-description, the exemplary embodiment is applied to the hand-held game apparatus 10. However, the exemplary embodiment is not limited thereto. The exemplary embodiment is applicable to a stationary game apparatus and a mobile information terminal such as a mobile phone, a personal handy-phone system (PHS), and a PDA. Moreover, the exemplary embodiment is applicable to a stationary game device and a personal computer.

While the exemplary embodiment has been described in detail, the foregoing description is in all aspects illustrative and not restrictive. It is understood that numerous other modifications and variations can be devised without departing from the scope of the exemplary embodiment. It is also understood that the one skilled in the art can implement the exemplary embodiment in the equivalent range based on the description of the present specification, and the common technological knowledge. Further, it should be understood that the terms used in the present specification have meanings generally used in the art unless otherwise specified. Therefore, unless otherwise defined, all the jargons and technical terms used in the present specification have the same meanings as those generally understood by one skilled in the art. In the event of nay contradiction, the present specification (including the definitions) precedes.

The image generation program, the image generation apparatus, the image generation system, and the image generation method according to the exemplary embodiment are useful as an image generation program, an image generation apparatus, an image generation system, an image generation method, and the like which can improve visibility. 

1. A computer-readable storage medium having stored therein an image generation program to be executed by a computer of a hand-held display device including a display unit, the image generation program causing the computer to execute: moving an object in a virtual space based on an operation performed by a user; setting a virtual camera in the virtual space based on at least one of a position, an orientation, and a travelling direction of the moved object in the virtual space; activating, based on an activation operation performed by the user, camera control for controlling an orientation of the virtual camera in accordance with an orientation of the display device; and generating an image to be displayed on the display unit by: when the camera control is activated, changing the set orientation of the virtual camera in accordance with the orientation of the display device and capturing the virtual space by using the virtual camera whose orientation has been changed; and when the camera control is not activated, capturing virtual space by using the virtual camera set based on at least one of the position, the orientation, and the travelling direction of the moved object.
 2. The storage medium according to claim 1, wherein when the camera control is activated, the orientation of the virtual camera is changed based on a change amount of the orientation of the display device from a reference orientation which is the orientation of the display device when the camera control is activated.
 3. The storage medium according to claim 1, wherein when the camera control is switched from an active state to an inactive state, the orientation of the virtual camera set based on at least one of the position, the orientation, and the travelling direction of the moved object is used unchanged irrespective of the orientation of the display device when the camera control is inactivated.
 4. The storage medium according to claim 3, wherein the virtual camera is set so that the object is included in a viewing range of the virtual camera.
 5. A hand-held image generation apparatus including a display unit, the image generation apparatus comprising: an object moving unit which moves an object in a virtual space based on an operation performed by a user; a virtual camera setting unit which sets a virtual camera in the virtual space based on at least one of a position, an orientation, and a travelling direction of the moved object in the virtual space; an activation unit which activates, based on an activation operation performed by the user, camera control for controlling an orientation of the virtual camera in accordance with an orientation of the display device; and an image generation unit which generates an image to be displayed on the display unit by: when the camera control is activated, changing the orientation of the virtual camera set by the virtual camera setting unit in accordance with the orientation of the display device and captures the virtual space by using the virtual camera whose orientation has been changed; and when the camera control is not activated, capturing virtual space by using the virtual camera set based on at least one of the position, the orientation, and the travelling direction of the moved object.
 6. An image generation method to be executed by a computer of a hand-held display device including a display unit, the image generation method comprising: moving an object in a virtual space based on an operation performed by a user; setting a virtual camera in the virtual space based on at least one of a position, an orientation, and a travelling direction of the moved object in the virtual space; activating, based on an activation operation performed by the user, camera control for controlling an orientation of the virtual camera in accordance with an orientation of the display device; and generating an image to be displayed on the display unit by: when the camera control is activated, changing the set orientation of the virtual camera in accordance with the orientation of the display device and capturing the virtual space by using the virtual camera whose orientation has been changed; and when the camera control is not activated, capturing virtual space by using the virtual camera set based on at least one of the position, the orientation, and the travelling direction of the moved object.
 7. An image generation system including a hand-held display device having a display unit, the image generation system comprising: an object moving unit which moves an object in a virtual space based on an operation performed by a user; a virtual camera setting unit which sets a virtual camera in the virtual space based on at least one of a position, an orientation, and a travelling direction of the moved object in the virtual space; an activation unit which activates, based on an activation operation performed by the user, camera control for controlling an orientation of the virtual camera in accordance with an orientation of the display device; and an image generation unit which generates an image to be displayed on the display unit by: when the camera control is activated, changing the orientation of the virtual camera set by the virtual camera setting unit in accordance with the orientation of the display device and captures the virtual space by using the virtual camera whose orientation has been changed; and when the camera control is not activated, capturing virtual space by using the virtual camera set based on at least one of the position, the orientation, and the travelling direction of the moved object. 